package com.devframe.web.taglib;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.Tag;

import com.devframe.sys.Constants;
import com.devframe.web.util.user.UserInfo;


/**
 * 
 * <pre>
 * &lt;b&gt;&lt;font color=&quot;blue&quot;&gt;SelectTag&lt;/font&gt;&lt;/b&gt;
 * </pre>
 * 
 * <pre>
 * &lt;b&gt; --用户权限控制标签--&lt;/b&gt;
 * </pre>
 * <pre>
 * 用于页面控制某些内容的生成，如控制按钮或者菜单。
 * 根据权限ID进行控制。
 * </pre>
 * <pre>
 * &lt;b&gt;--样例--&lt;/b&gt;
 *   SelectTag obj = new UserPowerTag();
 *   obj.method();
 * </pre>
 * 
 * JDK版本：JDK1.4
 * 
 * 
 */
public class UserPowerTag extends BodyTagSupport {
	/**
     * serialVersionUID
     */
    private static final long serialVersionUID = -854126750981793021L;
    /**
	 * code权限代码，支持EL表达式
	 */
	private String code = null; 
	/**
	 * 标签处理逻辑，生成option列表
	 * @return EVAL_BODY_INCLUDE OR SKIP_BODY，成功返回EVAL_BODY_INCLUDE，否则SKIP_BODY
	 */
	public int doStartTag() {
		try {
			if (code == null || code.equals("")) {
				return Tag.SKIP_BODY;
			}
			String powerCode = null;
			powerCode = (String) pageContext.findAttribute(code);
			if (powerCode == null) {
				powerCode = code;
			}
			UserInfo ui = (UserInfo) pageContext.getSession().getAttribute(Constants.USERINFO);
			boolean havePower = false;
			if (ui != null) {
				havePower = ui.hasPower(powerCode);
			}
			if (havePower) {
				return Tag.EVAL_BODY_INCLUDE;
			} else { 
				return Tag.SKIP_BODY;
			}
		} catch (Exception e) {
			return Tag.SKIP_BODY;
		}
	}

	/**
	 * 啥也没干，继续执行页面渲染
	 * @return EVAL_PAGE
	 * @throws JspException JspException
	 * 
	 */
	public int doEndTag() throws JspException {

		return Tag.EVAL_PAGE;

	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

}
